package Cliente.interface_grafico;

import java.io.IOException;
import java.io.ObjectOutputStream;

import javax.swing.JLabel;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;


import mensagem.MListaJogadores;
import mensagem.MObjectArray;
import mensagem.MSimples;
import mensagem.MVerEstatistica;
import mensagem.MVerPerfil;
import mensagem.TipoMensagem;

public class InterfaceGrafico {
	private MesaGrafica mesa;
	private JMenuBar menu_bar;
	private NovoJogoMenu novo_jogo_menu;
	
	public InterfaceGrafico(CartaPartilhada carta_partilhada) {
		super();
		this.mesa = new MesaGrafica(carta_partilhada);
		this.novo_jogo_menu = null;
	}

	public void procuraJogadores(ObjectOutputStream output, int id_jogador) {
			try {
				synchronized(output){
					output.writeObject(new MSimples(TipoMensagem.CLIENTE_PESQUISA));
				}
			} catch (IOException e) {}
	}

	public void perfil(MVerPerfil mensagem, ObjectOutputStream output) {
		new Perfil(mensagem, output);

	}
	
	public void pesquisa(MObjectArray nacionalidades, ObjectOutputStream output, int id_jogador){
		ProcuraJogadores procura_jogadores = new ProcuraJogadores(output, id_jogador, ((String[])nacionalidades.getObject()));
		procura_jogadores.setVisible(true);
	}
	
	

	public void meuPerfil(MVerPerfil mensagem, ObjectOutputStream output) {
		new MeuPerfil(mensagem, output);

	}

	public void top(MListaJogadores mensagem, ObjectOutputStream output) {
		new JogadoresEncontrados("King - Os melhores jogadores", mensagem, output);

	}

	public void estatistica(MVerEstatistica mensagem) {
		new Estatistica(mensagem);

	}

	public void jogadoresEncontrados(MListaJogadores mensagem, ObjectOutputStream output) {
		new JogadoresEncontrados("King - Jogadores encontrados", mensagem, output);

	}

	public void bdOk() {
		new Thread(){
			@Override
			public void run(){
				JOptionPane.showMessageDialog(new JLabel(), "Os dados foram actualizados!", "Ok", 1);
			}
		}.start();

	}

	public void bdErro() {
		new Thread(){
			@Override
			public void run(){
				JOptionPane.showMessageDialog(new JLabel(), "Houve um erro ao aceder � base de dados!", "Erro", 0);
			}
		}.start();

	}

	public void mensagemErro() {
		new Thread(){
			@Override
			public void run(){
				JOptionPane.showMessageDialog(new JLabel(), "Houve um erro na comunica��o com o servidor!", "Erro", 0);
			}
		}.start();

	}

	public MesaGrafica getMesa() {
		return mesa;
	}

	public void bdRegistoOk() {
		new Thread(){
			@Override
			public void run(){
				JOptionPane.showMessageDialog(new JLabel(), "O seu registo foi efectuado com sucesso!", "Parabéns", 1);
			}
		}.start();
		
	}

	public void setJMenuBar(JMenuBar menu_bar) {
		this.menu_bar = menu_bar;
	}

	public JMenuBar getJMenuBar() {
		return menu_bar;
	}

	public void jogosAbertos(MObjectArray<Integer[]> jogos_abertos, ObjectOutputStream output, Menu menu) {
		novo_jogo_menu = new NovoJogoMenu( jogos_abertos.getObject(), output, this, menu);
	}

	public void fecharNovoJogoMenu(){
		novo_jogo_menu.setVisible(false);
		novo_jogo_menu.dispose();
	}

}
